package com.lh.jianzhioffer.专项练习.链表;

import javax.swing.plaf.SpinnerUI;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author: linghao
 * @since: 2023/3/18
 *
 * 运用所掌握的数据结构，设计和实现一个  LRU (Least Recently Used，最近最少使用) 缓存机制 。
 *
 * 实现 LRUCache 类：
 *
 * LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存
 * int get(int key) 如果关键字 key 存在于缓存中，则返回关键字的值，否则返回 -1 。
 * void put(int key, int value) 如果关键字已经存在，则变更其数据值；如果关键字不存在，则插入该组「关键字-值」。当缓存容量达到上限时，它应该在写入新数据之前删除最久未使用的数据值，从而为新的数据值留出空间
 *
 */
public class 最近最少使用缓存031demo1 extends LinkedHashMap<Integer,Integer> {

    private int capacity;

    public 最近最少使用缓存031demo1(int initialCapacity) {
        super(initialCapacity,0.75f,true);
        capacity = initialCapacity;
    }

    public int get(int key) {
        return super.getOrDefault(key,-1);
    }

    public void put(int key, int value) {
        super.put(key,value);
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry eldest) {
        return size()>capacity;
    }
}
